שירות חילופי מחזיקים - מפרט טכני
1. סיכום מנהלים
שירות חילופי מחזיקים הוא חלק ממערכת מוני service המאפשרת לדיירים להעביר בעלות על נכסים בין דיירים שונים. השירות מטפל בתהליכי ביטול רישום דייר קיים ורישום דייר חדש, כולל העברת מידע בין המערכת מוני serviceת לספקיות חיצוניות.
השירות פועל כחלק ממערכת microservicesממשק עם:
- מערכת הרשויות המקומיות
- ספקיות חיצוניות לניהול נתונים
- מערכת Directus לבדיקות דמו
- מערכת אימות OAuth2
זרימת עבודה פשוטה:
- האזרח נכנס ממלא טופס חילופי מחזיקים, הטופס מפנה למוני service
- מוני service קולט את הנתונים וממיר אותם
- מוני service פונה לספק בשביל קבלת חילופי מחזיקים
- מוני service מעבד את המידע ומארגן אותו
- מוני service מחזיר לאזרח מידע מפורט על כל מספר תיק סופי סטטוס הבקשה, הודעות למשתמש שברשותו,
2. תכונות עיקריות
- הגשת בקשות חילופי מחזיקים: טופס מקוון להעברת בעלות על נכס
- אימות נתונים: בדיקת תקינות פרטי הנכס והדיירים
- ממשק עם ספקיות חיצוניות: העברת נתונים לספקיות מוניציפליות
- ניהול קבצים: העלאת חוזי שכירות וחוזי מכר
- מעקב אחר בקשות: החזרת מספר תיק לכל בקשה
- בדיקת Directus: אימות נתונים מול שרת דמו
3. מדריך שימוש מהיר
3.1 הגשת בקשה
- מלא את פרטי הנכס (כתובת, מספר נכס, מיקוד)
- הזן פרטי הדייר היוצא (שם, תעודת זהות, אימייל, טלפון)
- הזן פרטי הדייר הנכנס (שם, תעודת זהות, אימייל, טלפון)
- בחר סוג עסקה (שכירות/מכר)
- העלה קבצים רלוונטיים (חוזה שכירות/מכר)
- שלח את הבקשה
3.2 קבלת תגובה
- מספר תיק יוחזר לאחר עיבוד מוצלח
- הודעות שגיאה יוצגו במקרה של בעיות
4. תיאור זרימת העבודה
4.1 ארבעת הזרימות (Gisonim)
זרימה 1: מהמערך למוני service
מה מפעיל את הזרימה:
- הגשת טופס חילופי מחזיקים דרך ממשק המשתמש
מה קורה בזרימה:
- קבלת בקשה דרך
POST /api/v1/sendHolderSwitchForm - אימות נתונים עם
class-validator - בדיקת תקינות פרטי הנכס והדיירים
- שמירת הבקשה במערכת
איזה נתונים מועברים:
- פרטי נכס (כתובת, מספר נכס, מיקוד)
- פרטי דייר יוצא (שם, תעודת זהות, פרטי קשר)
- פרטי דייר נכנס (שם, תעודת זהות, פרטי קשר)
- פרטי עסקה (סוג, תאריך)
- קבצים מצורפים
איך מטופלות שגיאות:
- שגיאות אימות מוחזרות עם הודעות בעברית
- שגיאות שרת מוחזרות עם קוד שגיאה מתאים
מה מוחזר:
- מספר תיק ייחודי
זרימה 2: ממוני service לספקית חיצונית
מה מפעיל את הזרימה:
- הצלחת אימות הנתונים בזרימה 1
מה קורה בזרימה:
- חיפוש רשות מקומית לפי קוד יישוב
- קבלת פרטי ספקית חיצונית מהרשות
- קבלת טוקן אימות מהספקית
- העברת נתונים מעובדים לספקית
איזה נתונים מועברים:
- נתונים מעובדים בפורמט JSON
- פרטי אימות (טוקן)
- קוד רשות מקומית
איך מטופלות שגיאות:
- שגיאות חיבור לספקית
- שגיאות אימות
- שגיאות העברת נתונים
מה מוחזר:
- אישור קבלת הבקשה מהספקית
זרימה 3: מספקית חיצונית למוני service
מה מפעיל את הזרימה:
- עיבוד הבקשה על ידי הספקית החיצונית
מה קורה בזרימה:
- עיבוד נתונים על ידי הספקית
- עדכון רשומות במערכת הספקית
- החזרת תגובה למערכת מוני serviceת
איזה נתונים מועברים:
- סטטוס עיבוד
- מספר תיק בספקית
- הודעות שגיאה (אם יש)
איך מטופלות שגיאות:
- שגיאות עיבוד נתונים
- שגיאות חיבור
- שגיאות אימות
מה מוחזר:
- אישור עיבוד מוצלח או הודעת שגיאה
זרימה 4: ממוני service למערך
מה מפעיל את הזרימה:
- קבלת תגובה מספקית חיצונית
מה קורה בזרימה:
- עיבוד תגובת הספקית
- עדכון סטטוס הבקשה
- החזרת תגובה למשתמש
איזה נתונים מועברים:
- מספר תיק סופי
- סטטוס הבקשה
- הודעות למשתמש
איך מטופלות שגיאות:
- שגיאות עיבוד תגובה
- שגיאות עדכון סטטוס
מה מוחזר:
- מספר תיק סופי למשתמש
4.2 בדיקת Directus Dummy Server
מתי נקרא:
- במצב פיתוח (NODE_ENV === 'development')
- כאשר הספקית מכוונת לשרת Directus
מה נבדק:
- תקינות חיבור לשרת Directus
- זמינות נתונים לבדיקה
- תקינות טוקן אימות
למה זה נדרש:
- בדיקות במצב פיתוח
- סימולציה של ספקיות חיצוניות
- אימות פונקציונליות ללא ספקיות אמיתיות
איך זה משפיע על הזרימה:
- מחליף את הספקית החיצונית האמיתית
- מאפשר בדיקות ללא תלות בספקיות חיצוניות
- מספק נתוני דמו לבדיקות
5. תלות חיצוניות ושירותים
5.1 שירותים פנימיים
- MunicipalitiesService: ניהול רשויות מקומיות
- SupplierAuthServiceService: אימות עם ספקיות חיצוניות
- ExternalSupplierService: ניהול ספקיות חיצוניות
- MongodbServiceService: גישה למסד נתונים
5.2 שירותים חיצוניים
- Directus: שרת דמו לבדיקות
- ספקיות מוניציפליות: עיבוד בקשות חילופי מחזיקים
5.3 תלויות טכניות
- NestJS: מסגרת עבודה
- MongoDB: מסד נתונים
- Axios: בקשות HTTP
- Class-validator: אימות נתונים
- OAuth2: אימות משתמשים
6. תצורה ומשתני סביבה
6.1 משתני סביבה נדרשים
NODE_ENV: סביבת עבודה (development/production)DemoProvider_url: כתובת שרת DirectusDemoProvider_token: טוקן אימות ל-Directusmongo_conn: חיבור למסד נתונים MongoDB
6.2 תצורת בסיס נתונים
- Collection:
externalsuppliers- ספקיות חיצוניות - Collection:
municipalities- רשויות מקומיות - Collection:
services- שירותים מוניציפליים
7. מבני נתונים / DTOs / מודלים
7.1 DTOs עיקריים
- HolderSwitchReqDto: בקשה לחילופי מחזיקים
- HolderSwitchDto: תגובה לחילופי מחזיקים
- PropertyDetailsDto: פרטי נכס
- AbolitionPropertyDto: פרטי דייר יוצא
- RegistrationPropertyDto: פרטי דייר נכנס
- IdentificationTransactionDto: פרטי עסקה
7.2 סכמות MongoDB
- ExternalSupplier: ספקיות חיצוניות
- Service: שירותים מוניציפליים
- Municipality: רשויות מקומיות
8. טיפול בשגיאות ומקרי קצה
8.1 שגיאות אימות
- נתונים חסרים או לא תקינים
- פורמט תאריכים לא נכון
- מספרי תעודת זהות לא תקינים
- כתובות אימייל לא תקינות
8.2 שגיאות חיבור
- חיבור לספקית חיצונית נכשל
- חיבור למסד נתונים נכשל
- חיבור ל-Directus נכשל
8.3 שגיאות עסקיות
- רשות מקומית לא נמצאה
- ספקית לא זמינה
- שירות מוקפא
9. אבטחה והרשאות
9.1 אימות
- OAuth2 Guard לכל הבקשות
- אימות טוקן JWT
- בדיקת הרשאות משתמש
9.2 הרשאות
- רק משתמשים מאומתים יכולים להגיש בקשות
- בדיקת הרשאות לפי תפקיד
9.3 הגנות
- אימות קלט מחמיר
- הגנה מפני SQL Injection
- הגנה מפני XSS
10. בדיקות
10.1 בדיקות יחידה
- בדיקת DTOs עם נתונים תקינים ולא תקינים
- בדיקת שירותי אימות
- בדיקת טרנספורמציה של נתונים
10.2 בדיקות אינטגרציה
- בדיקת חיבור לספקיות חיצוניות
- בדיקת חיבור למסד נתונים
- בדיקת זרימת נתונים מלאה
10.3 בדיקות E2E
- בדיקת זרימה מלאה מהמשתמש ועד הספקית
- בדיקת תרחישי שגיאה
- בדיקת ביצועים
11. לוגים ומעקב
11.1 לוגים
- לוגים של כל בקשה נכנסת
- לוגים של שגיאות
- לוגים של חיבורים לספקיות
11.2 מעקב
- מעקב אחר זמני תגובה
- מעקב אחר שיעורי הצלחה
- מעקב אחר שגיאות